package edu.cgpi.core.util;

import edu.cgpi.core.comando.Clipping;
import edu.cgpi.core.comando.CliqueArraste;
import edu.cgpi.core.comando.CliqueArrasteMultiplo;
import edu.cgpi.core.comando.Comando;
import edu.cgpi.core.entidade.grafico.CirculoComum2D;
import edu.cgpi.core.entidade.grafico.CirculoOtimizado2D;
import edu.cgpi.core.entidade.grafico.Imagem;
import edu.cgpi.core.entidade.grafico.Poligono2D;
import edu.cgpi.core.entidade.grafico.Reta2D;
import edu.cgpi.core.entidade.grafico.RetaPoligonal2D;
import edu.cgpi.core.entidade.grafico.Retangulo2D;

/**
 * Enum com todas as imagens que a aplica��o consegue desenhar e a sua
 * respectiva classe.
 */
public enum TipoImagem {

	RETA ("Reta", Reta2D.class, CliqueArraste.class),
	RETANGULO ("Retangulo", Retangulo2D.class, CliqueArraste.class),
	CIRCULO_COMUM ("Circulo Comum", CirculoComum2D.class, CliqueArraste.class),
	//CIRCULO_OTIMIZADO ("Circulo Otimizado", CirculoOtimizado2D.class, CliqueArraste.class),
	RETA_POLIGONAL ("Reta Poligonal", RetaPoligonal2D.class, CliqueArrasteMultiplo.class),
	POLIGONO ("Polígono", Poligono2D.class, CliqueArrasteMultiplo.class),
	RETANGULO_SELECAO("Clipping", Retangulo2D.class, Clipping.class);

	private String nome;
	private Class<? extends Imagem> classeImagem;
	private Class<? extends Comando> classeComando;

	private TipoImagem(
			String nome,
			Class<? extends Imagem> classeImagem,
			Class<? extends Comando> classeComando) {
		this.nome = nome;
		this.classeImagem = classeImagem;
		this.classeComando = classeComando;
	}
	
	public String getNome() {
		return nome;
	}

	public Class<? extends Imagem> getClasseImagem() {
		return classeImagem;
	}
	
	public Class<? extends Comando> getClasseComando() {
		return classeComando;
	}
}